package br.com.sol.persistencia;

import java.util.LinkedList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import br.com.sol.model.Contato;
import br.com.sol.model.Perfil;

public class PerfilDAO extends DAO<Perfil>{
	
	private ContatoDAO contatoDAO;

	public PerfilDAO(Context context) {
		super(context);
		contatoDAO = new ContatoDAO(context);
	}

	@Override
	public long insert(Perfil obj) {		
		ContentValues values = new ContentValues();
		values.put("id_contato", this.contatoDAO.insert(obj));
		open();
		long idPerfil = database.insert(Perfil.TABLE_NAME, null, values);
		close();		
		return idPerfil;
	}

	@Override
	public boolean update(Perfil obj) {
		return this.contatoDAO.update(obj);
	}

	@Override
	public boolean delete(Perfil obj) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public List<Perfil> select(Perfil obj) {
		List<Perfil> list = new LinkedList<Perfil>();
		open();
        Cursor cursor = database.query(Perfil.TABLE_NAME, null, null, null, null, null, null);
        if (cursor.moveToFirst()) {
        	obj.setIdContato(Integer.valueOf(cursor.getString(1)));
            Contato contato = this.contatoDAO.select(obj).get(0);
            
            Perfil perfil = new Perfil();
            perfil.setIdPerfil(Integer.valueOf(cursor.getString(0)));
            perfil.setDataNascimento(contato.getDataNascimento());
            perfil.setEmail(contato.getEmail());
            perfil.setGenero(contato.getGenero());
            perfil.setIdContato(contato.getIdContato());
            perfil.setNome(contato.getNome());
            perfil.setRelacionamento(contato.getRelacionamento());
            perfil.setTelefone(contato.getTelefone());
            
            list.add(perfil);
        }
        if (cursor != null && !cursor.isClosed()) {
        	cursor.close();
        }
        close();
        return list;
	}

	@Override
	public Integer getLastId() {
		// TODO Auto-generated method stub
		return null;
	}
	
}
